<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MuPDFCore: MuPDFCore/MuPDFDocument.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="Doxy.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><img alt="Logo" src="icon.svg"/></td>
  <td id="projectalign">
   <div id="projectname">MuPDFCore<span id="projectnumber">&#160;1.6.0</span>
   </div>
   <div id="projectbrief">Multiplatform .NET bindings for MuPDF</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('_mu_p_d_f_document_8cs_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle"><div class="title">MuPDFDocument.cs</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">    MuPDFCore - A set of multiplatform .NET Core bindings for MuPDF.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">    Copyright (C) 2020  Giorgio Bianchini</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"></span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment">    This program is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment">    it under the terms of the GNU Affero General Public License as</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment">    published by the Free Software Foundation, version 3.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"></span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment">    This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment">    GNU Affero General Public License for more details.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment"></span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment">    You should have received a copy of the GNU Affero General Public License</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment">    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="comment">*/</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">using </span>System;</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">using </span>System.IO;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="keyword">using </span>System.Runtime.InteropServices;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="keyword">using </span>System.Text;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="keyword">using </span>System.Threading;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="keyword">using </span>System.Threading.Tasks;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespace_mu_p_d_f_core.html">MuPDFCore</a></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>{<span class="comment"></span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="comment">    /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="comment">    /// A wrapper over a MuPDF document object, which contains possibly multiple pages.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="comment">    /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html">   30</a></span><span class="comment"></span>    <span class="keyword">public</span> <span class="keyword">class </span><a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html">MuPDFDocument</a> : IDisposable</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    {<span class="comment"></span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="comment">        /// If the document is an image, the horizontal resolution of the image. Otherwise, 72.</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="comment"></span>        <span class="keyword">internal</span> <span class="keywordtype">double</span> ImageXRes = <span class="keywordtype">double</span>.NaN;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="comment"></span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment">        /// If the document is an image, the vertical resolution of the image. Otherwise, 72.</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment"></span>        <span class="keyword">internal</span> <span class="keywordtype">double</span> ImageYRes = <span class="keywordtype">double</span>.NaN;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="comment"></span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment">        /// File extensions corresponding to the supported input formats.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="comment"></span>        <span class="keyword">private</span> <span class="keyword">static</span> readonly <span class="keywordtype">string</span>[] FileTypeMagics = <span class="keyword">new</span>[]</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>        {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>            <span class="stringliteral">&quot;.pdf&quot;</span>,</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>            <span class="stringliteral">&quot;.xps&quot;</span>,</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>            <span class="stringliteral">&quot;.cbz&quot;</span>,</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>            <span class="stringliteral">&quot;.png&quot;</span>,</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>            <span class="stringliteral">&quot;.jpg&quot;</span>,</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>            <span class="stringliteral">&quot;.bmp&quot;</span>,</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>            <span class="stringliteral">&quot;.gif&quot;</span>,</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>            <span class="stringliteral">&quot;.tif&quot;</span>,</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>            <span class="stringliteral">&quot;.pnm&quot;</span>,</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>            <span class="stringliteral">&quot;.pam&quot;</span>,</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>            <span class="stringliteral">&quot;.epub&quot;</span>,</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>            <span class="stringliteral">&quot;.fb2&quot;</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>        };</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="comment"></span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span><span class="comment">        /// An &lt;see cref=&quot;IDisposable&quot;/&gt; with a value of null.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="comment"></span>        <span class="keyword">private</span> <span class="keyword">static</span> IDisposable NullDataHolder = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span><span class="comment"></span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span><span class="comment">        /// The context that owns this document.</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="comment"></span>        <span class="keyword">private</span> readonly <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> OwnerContext;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span><span class="comment"></span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span><span class="comment">        /// A pointer to the native document object.</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="comment"></span>        <span class="keyword">internal</span> readonly IntPtr NativeDocument;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="comment"></span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span><span class="comment">        /// A pointer to the native stream that was used to create this document (if any).</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="comment"></span>        <span class="keyword">private</span> readonly IntPtr NativeStream = IntPtr.Zero;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="comment"></span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span><span class="comment">        /// The number of pages in the document.</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="comment"></span>        <span class="keyword">private</span> readonly <span class="keywordtype">int</span> PageCount;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="comment"></span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span><span class="comment">        /// An &lt;see cref=&quot;IDisposable&quot;/&gt; that will be disposed together with this object.</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="comment"></span>        <span class="keyword">private</span> readonly IDisposable DataHolder = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="comment"></span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="comment">        /// A &lt;see cref=&quot;GCHandle&quot;/&gt; that will be freed when this object is disposed.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="comment"></span>        <span class="keyword">private</span> GCHandle? DataHandle = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="comment"></span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span><span class="comment">        /// An array of &lt;see cref=&quot;MuPDFDisplayList&quot;/&gt;, one for each page in the document.</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="comment"></span>        <span class="keyword">private</span> readonly MuPDFDisplayList[] DisplayLists;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="comment"></span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span><span class="comment">        /// The pages contained in the document.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">  104</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFPageCollection</a> <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a> { <span class="keyword">get</span>; }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span><span class="comment"></span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span><span class="comment">        /// Defines whether the images resulting from rendering operations should be clipped to the page boundaries.</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4e7f89e98170b4cb9e88e6bf63f2da57">  109</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4e7f89e98170b4cb9e88e6bf63f2da57">ClipToPageBounds</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; } = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span><span class="comment"></span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span><span class="comment">        /// Describes the encryption state of the document.</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a769f52a2b222998676d6028264175988">  114</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> { <span class="keyword">get</span>; <span class="keyword">private</span> <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><span class="comment"></span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span><span class="comment">        /// Describes the restriction state of the document.</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a31849c65b21c7a5e2999078a0ac9c4cf">  119</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a> { <span class="keyword">get</span>; <span class="keyword">private</span> <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span><span class="comment"></span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span><span class="comment">        /// Describes the operations that are restricted on the document. This is not actually enforced by the library,</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span><span class="comment">        /// but library users should only allow these operations if the document has been unlocked with the owner password</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span><span class="comment">        /// (i.e. if &lt;see cref=&quot;RestrictionState&quot;/&gt; is &lt;see cref=&quot;RestrictionState.Unlocked&quot;/&gt;).</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#af93dd2bd9576b2b2612e159e647eae33">  126</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a> <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#af93dd2bd9576b2b2612e159e647eae33">Restrictions</a> { <span class="keyword">get</span>; <span class="keyword">private</span> <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span><span class="comment"></span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFDocument&quot;/&gt; from data bytes accessible through the specified pointer.</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that will own this document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span><span class="comment">        /// &lt;param name=&quot;dataAddress&quot;&gt;A pointer to the data bytes that make up the document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span><span class="comment">        /// &lt;param name=&quot;dataLength&quot;&gt;The number of bytes to read from the specified address.&lt;/param&gt;</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The type of the document to read.&lt;/param&gt;</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac3366ccae6a79335ba7ac73fdf4507d4">  135</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac3366ccae6a79335ba7ac73fdf4507d4">MuPDFDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, IntPtr dataAddress, <span class="keywordtype">long</span> dataLength, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a> fileType) : this(context, dataAddress, dataLength, fileType, ref NullDataHolder) { }</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span><span class="comment"></span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFDocument&quot;/&gt; from data bytes accessible through the specified pointer.</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that will own this document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span><span class="comment">        /// &lt;param name=&quot;dataAddress&quot;&gt;A pointer to the data bytes that make up the document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span><span class="comment">        /// &lt;param name=&quot;dataLength&quot;&gt;The number of bytes to read from the specified address.&lt;/param&gt;</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The type of the document to read.&lt;/param&gt;</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span><span class="comment">        /// &lt;param name=&quot;dataHolder&quot;&gt;An &lt;see cref=&quot;IDisposable&quot;/&gt; that will be disposed when the &lt;see cref=&quot;MuPDFDocument&quot;/&gt; is disposed.&lt;/param&gt;</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aac27de3027a4fd44bbae7f5d5ebb44ac">  145</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aac27de3027a4fd44bbae7f5d5ebb44ac">MuPDFDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, IntPtr dataAddress, <span class="keywordtype">long</span> dataLength, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a> fileType, ref IDisposable dataHolder)</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>        {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>            <span class="keywordtype">bool</span> isImage = fileType == InputFileTypes.BMP || fileType == InputFileTypes.GIF || fileType == InputFileTypes.JPEG || fileType == InputFileTypes.PAM || fileType == InputFileTypes.PNG || fileType == InputFileTypes.PNM || fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a>.TIFF;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>            this.OwnerContext = context;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>            <span class="keywordtype">float</span> xRes = 0;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>            <span class="keywordtype">float</span> yRes = 0;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.CreateDocumentFromStream(context.NativeContext, dataAddress, (ulong)dataLength, FileTypeMagics[(int)fileType], isImage ? 1 : 0, ref NativeDocument, ref NativeStream, ref PageCount, ref xRes, ref yRes);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>            <span class="keywordflow">if</span> (xRes &gt; 72)</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>            {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>                this.ImageXRes = xRes;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>            }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>            {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>                this.ImageXRes = 72;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>            }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>            <span class="keywordflow">if</span> (yRes &gt; 72)</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>            {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>                this.ImageYRes = yRes;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>            }</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>            {</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>                this.ImageYRes = 72;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>            }</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>            this.DataHolder = dataHolder;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>            {</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_STREAM:</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open data stream&quot;</span>, result);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_FILE:</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open document&quot;</span>, result);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_COUNT_PAGES:</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot count pages&quot;</span>, result);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>            }</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>            <span class="keywordflow">if</span> (NativeMethods.CheckIfPasswordNeeded(context.NativeContext, <span class="keyword">this</span>.NativeDocument) != 0)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>            {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>            }</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>            {</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unencrypted;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>            }</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>            <span class="keywordtype">int</span> permissions = NativeMethods.GetPermissions(context.NativeContext, <span class="keyword">this</span>.NativeDocument);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>            <span class="keywordtype">int</span> restrictions = 0;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span>            <span class="keywordflow">if</span> ((permissions &amp; 1) == 0)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>            {</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>                restrictions |= 1;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>            }</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>            <span class="keywordflow">if</span> ((permissions &amp; 2) == 0)</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>            {</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>                restrictions |= 2;</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>            }</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>            <span class="keywordflow">if</span> ((permissions &amp; 4) == 0)</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>            {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>                restrictions |= 4;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>            }</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>            <span class="keywordflow">if</span> ((permissions &amp; 8) == 0)</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>            {</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>                restrictions |= 8;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>            }</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>            <span class="keywordflow">if</span> (restrictions == 0)</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>            {</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>                this.Restrictions = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>.None;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unrestricted;</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>            }</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>            {</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>                this.Restrictions = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>)restrictions;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>            }</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>            <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a> = <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFPageCollection</a>(context, <span class="keyword">this</span>, PageCount);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>            DisplayLists = <span class="keyword">new</span> MuPDFDisplayList[PageCount];</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>        }</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span><span class="comment"></span> </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFDocument&quot;/&gt; from an array of bytes.</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that will own this document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span><span class="comment">        /// &lt;param name=&quot;data&quot;&gt;An array containing the data bytes that make up the document. This must not be altered until after the &lt;see cref=&quot;MuPDFDocument&quot;/&gt; has been disposed!</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span><span class="comment">        /// The address of the array will be pinned, which may cause degradation in the Garbage Collector&#39;s performance, and is thus only advised for short-lived documents. To avoid this issue, marshal the bytes to unmanaged memory and use one of the &lt;see cref=&quot;IntPtr&quot;/&gt; constructors.&lt;/param&gt;</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The type of the document to read.&lt;/param&gt;</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aaa26de08c78c1abd6af2593533e92eab">  245</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aaa26de08c78c1abd6af2593533e92eab">MuPDFDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, <span class="keywordtype">byte</span>[] data, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a> fileType)</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>        {</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>            <span class="keywordtype">bool</span> isImage = fileType == InputFileTypes.BMP || fileType == InputFileTypes.GIF || fileType == InputFileTypes.JPEG || fileType == InputFileTypes.PAM || fileType == InputFileTypes.PNG || fileType == InputFileTypes.PNM || fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a>.TIFF;</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span> </div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>            this.OwnerContext = context;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>            DataHandle = GCHandle.Alloc(data, GCHandleType.Pinned);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>            IntPtr dataAddress = DataHandle.Value.AddrOfPinnedObject();</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>            ulong dataLength = (ulong)data.Length;</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span> </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>            <span class="keywordtype">float</span> xRes = 0;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>            <span class="keywordtype">float</span> yRes = 0;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.CreateDocumentFromStream(context.NativeContext, dataAddress, dataLength, FileTypeMagics[(<span class="keywordtype">int</span>)fileType], isImage ? 1 : 0, ref NativeDocument, ref NativeStream, ref PageCount, ref xRes, ref yRes);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>            <span class="keywordflow">if</span> (xRes &gt; 72)</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span>            {</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>                this.ImageXRes = xRes;</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>            }</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>            {</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>                this.ImageXRes = 72;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>            }</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>            <span class="keywordflow">if</span> (yRes &gt; 72)</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>            {</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>                this.ImageYRes = yRes;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>            }</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>            {</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>                this.ImageYRes = 72;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>            }</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span>            {</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_STREAM:</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open data stream&quot;</span>, result);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_FILE:</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open document&quot;</span>, result);</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_COUNT_PAGES:</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot count pages&quot;</span>, result);</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span>            }</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>            <span class="keywordflow">if</span> (NativeMethods.CheckIfPasswordNeeded(context.NativeContext, <span class="keyword">this</span>.NativeDocument) != 0)</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>            {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span>            }</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  297</span>            {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unencrypted;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>            }</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span> </div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>            <span class="keywordtype">int</span> permissions = NativeMethods.GetPermissions(context.NativeContext, <span class="keyword">this</span>.NativeDocument);</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span>            <span class="keywordtype">int</span> restrictions = 0;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span> </div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>            <span class="keywordflow">if</span> ((permissions &amp; 1) == 0)</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span>            {</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span>                restrictions |= 1;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>            }</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span>            <span class="keywordflow">if</span> ((permissions &amp; 2) == 0)</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>            {</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>                restrictions |= 2;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span>            }</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span>            <span class="keywordflow">if</span> ((permissions &amp; 4) == 0)</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span>            {</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  317</span>                restrictions |= 4;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span>            }</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>            <span class="keywordflow">if</span> ((permissions &amp; 8) == 0)</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>            {</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>                restrictions |= 8;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>            }</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span>            <span class="keywordflow">if</span> (restrictions == 0)</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>            {</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span>                this.Restrictions = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>.None;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unrestricted;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>            }</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>            {</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span>                this.Restrictions = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>)restrictions;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span>            }</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span>            <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a> = <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFPageCollection</a>(context, <span class="keyword">this</span>, PageCount);</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span>            DisplayLists = <span class="keyword">new</span> MuPDFDisplayList[PageCount];</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>        }</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span><span class="comment"></span> </div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  341</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFDocument&quot;/&gt; from a &lt;see cref=&quot;MemoryStream&quot;/&gt;.</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno">  342</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  343</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that will own this document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span><span class="comment">        /// &lt;param name=&quot;data&quot;&gt;The &lt;see cref=&quot;MemoryStream&quot;/&gt; containing the data that makes up the document. This will be disposed when the &lt;see cref=&quot;MuPDFDocument&quot;/&gt; has been disposed and must not be disposed externally!</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span><span class="comment">        /// The address of the &lt;see cref=&quot;MemoryStream&quot;/&gt;&#39;s buffer will be pinned, which may cause degradation in the Garbage Collector&#39;s performance, and is thus only advised for short-lived documents. To avoid this issue, marshal the bytes to unmanaged memory and use one of the &lt;see cref=&quot;IntPtr&quot;/&gt; constructors.&lt;/param&gt;</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The type of the document to read.&lt;/param&gt;</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a55cce640549a58648d592f0f213dd8be">  347</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a55cce640549a58648d592f0f213dd8be">MuPDFDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, ref MemoryStream data, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a> fileType)</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span>        {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  349</span>            <span class="keywordtype">bool</span> isImage = fileType == InputFileTypes.BMP || fileType == InputFileTypes.GIF || fileType == InputFileTypes.JPEG || fileType == InputFileTypes.PAM || fileType == InputFileTypes.PNG || fileType == InputFileTypes.PNM || fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">InputFileTypes</a>.TIFF;</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span> </div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>            this.OwnerContext = context;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span> </div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span>            <span class="keywordtype">int</span> origin = (int)data.Seek(0, SeekOrigin.Begin);</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span>            ulong dataLength = (ulong)data.Length;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>            <span class="keywordtype">byte</span>[] dataBytes = data.GetBuffer();</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span> </div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>            DataHandle = GCHandle.Alloc(dataBytes, GCHandleType.Pinned);</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>            IntPtr dataAddress = IntPtr.Add(DataHandle.Value.AddrOfPinnedObject(), origin);</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>            DataHolder = data;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span> </div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>            <span class="keywordtype">float</span> xRes = 0;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span>            <span class="keywordtype">float</span> yRes = 0;</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span> </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.CreateDocumentFromStream(context.NativeContext, dataAddress, dataLength, FileTypeMagics[(<span class="keywordtype">int</span>)fileType], isImage ? 1 : 0, ref NativeDocument, ref NativeStream, ref PageCount, ref xRes, ref yRes);</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span> </div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>            <span class="keywordflow">if</span> (xRes &gt; 72)</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>            {</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>                this.ImageXRes = xRes;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>            }</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span>            {</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span>                this.ImageXRes = 72;</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  374</span>            }</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>            <span class="keywordflow">if</span> (yRes &gt; 72)</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span>            {</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span>                this.ImageYRes = yRes;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span>            }</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  380</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>            {</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>                this.ImageYRes = 72;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>            }</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span> </div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span> </div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>            {</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_STREAM:</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open data stream&quot;</span>, result);</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_FILE:</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open document&quot;</span>, result);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_COUNT_PAGES:</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot count pages&quot;</span>, result);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span>            }</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span> </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>            <span class="keywordflow">if</span> (NativeMethods.CheckIfPasswordNeeded(context.NativeContext, <span class="keyword">this</span>.NativeDocument) != 0)</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span>            {</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span>            }</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span>            {</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unencrypted;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span>            }</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno">  408</span> </div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno">  409</span>            <span class="keywordtype">int</span> permissions = NativeMethods.GetPermissions(context.NativeContext, <span class="keyword">this</span>.NativeDocument);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>            <span class="keywordtype">int</span> restrictions = 0;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> </div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>            <span class="keywordflow">if</span> ((permissions &amp; 1) == 0)</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>            {</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>                restrictions |= 1;</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>            }</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span> </div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span>            <span class="keywordflow">if</span> ((permissions &amp; 2) == 0)</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span>            {</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span>                restrictions |= 2;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span>            }</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span> </div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span>            <span class="keywordflow">if</span> ((permissions &amp; 4) == 0)</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>            {</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span>                restrictions |= 4;</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>            }</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span> </div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>            <span class="keywordflow">if</span> ((permissions &amp; 8) == 0)</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span>            {</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span>                restrictions |= 8;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>            }</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span> </div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>            <span class="keywordflow">if</span> (restrictions == 0)</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span>            {</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>                this.Restrictions = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>.None;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unrestricted;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span>            }</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span>            {</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>                this.Restrictions = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>)restrictions;</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>            }</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span> </div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span>            <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a> = <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFPageCollection</a>(context, <span class="keyword">this</span>, PageCount);</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span>            DisplayLists = <span class="keyword">new</span> MuPDFDisplayList[PageCount];</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span>        }</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span><span class="comment"></span> </div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFDocument&quot;/&gt; from a file.</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that will own this document.&lt;/param&gt;</span></div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span><span class="comment">        /// &lt;param name=&quot;fileName&quot;&gt;The path to the file to open.&lt;/param&gt;</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5fba213e4b093be6e92b6ca067bd4e40">  453</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5fba213e4b093be6e92b6ca067bd4e40">MuPDFDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, <span class="keywordtype">string</span> fileName)</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span>        {</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span>            <span class="keywordtype">bool</span> isImage;</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span> </div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span>            <span class="keywordtype">string</span> extension = Path.GetExtension(fileName).ToLowerInvariant();</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span> </div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span>            <span class="keywordflow">switch</span> (extension)</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>            {</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.bmp&quot;</span>:</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.dib&quot;</span>:</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.gif&quot;</span>:</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span> </div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jpg&quot;</span>:</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jpeg&quot;</span>:</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jpe&quot;</span>:</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jif&quot;</span>:</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jfif&quot;</span>:</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.jfi&quot;</span>:</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span> </div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.pam&quot;</span>:</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.pbm&quot;</span>:</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.pgm&quot;</span>:</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.ppm&quot;</span>:</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.pnm&quot;</span>:</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span> </div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno">  479</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.png&quot;</span>:</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span> </div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.tif&quot;</span>:</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>                <span class="keywordflow">case</span> <span class="stringliteral">&quot;.tiff&quot;</span>:</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>                    isImage = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>                    isImage = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>            }</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span> </div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span> </div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>            this.OwnerContext = context;</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span> </div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span>            <span class="keywordtype">float</span> xRes = 0;</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>            <span class="keywordtype">float</span> yRes = 0;</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span> </div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result;</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span> </div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>            <span class="keyword">using</span> (UTF8EncodedString encodedFileName = <span class="keyword">new</span> UTF8EncodedString(fileName))</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span>            {</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>                result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.CreateDocumentFromFile(context.NativeContext, encodedFileName.Address, isImage ? 1 : 0, ref NativeDocument, ref PageCount, ref xRes, ref yRes);</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>            }</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span> </div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>            <span class="keywordflow">if</span> (xRes &gt; 72)</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span>            {</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>                this.ImageXRes = xRes;</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>            }</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span>            {</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span>                this.ImageXRes = 72;</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span>            }</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span> </div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span>            <span class="keywordflow">if</span> (yRes &gt; 72)</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span>            {</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>                this.ImageYRes = yRes;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>            }</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>            {</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>                this.ImageYRes = 72;</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>            }</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span> </div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span>            {</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_OPEN_FILE:</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot open document&quot;</span>, result);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_COUNT_PAGES:</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot count pages&quot;</span>, result);</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>            }</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span> </div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>            <span class="keywordflow">if</span> (NativeMethods.CheckIfPasswordNeeded(context.NativeContext, <span class="keyword">this</span>.NativeDocument) != 0)</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>            {</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted;</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>            }</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>            {</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>                this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unencrypted;</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>            }</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span> </div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>            <span class="keywordtype">int</span> permissions = NativeMethods.GetPermissions(context.NativeContext, <span class="keyword">this</span>.NativeDocument);</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span> </div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>            <span class="keywordtype">int</span> restrictions = 0;</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>            <span class="keywordflow">if</span> ((permissions &amp; 1) == 0)</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span>            {</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span>                restrictions |= 1;</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>            }</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span> </div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>            <span class="keywordflow">if</span> ((permissions &amp; 2) == 0)</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span>            {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span>                restrictions |= 2;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span>            }</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span> </div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span>            <span class="keywordflow">if</span> ((permissions &amp; 4) == 0)</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span>            {</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span>                restrictions |= 4;</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span>            }</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span> </div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>            <span class="keywordflow">if</span> ((permissions &amp; 8) == 0)</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>            {</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>                restrictions |= 8;</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span>            }</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span> </div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>            <span class="keywordflow">if</span> (restrictions == 0)</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span>            {</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>                this.Restrictions = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>.None;</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unrestricted;</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span>            }</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>            {</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span>                this.Restrictions = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">DocumentRestrictions</a>)restrictions;</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span>                this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted;</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span>            }</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span>            <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a> = <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFPageCollection</a>(context, <span class="keyword">this</span>, PageCount);</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>            DisplayLists = <span class="keyword">new</span> MuPDFDisplayList[PageCount];</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>        }</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span><span class="comment"></span> </div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span><span class="comment">        /// Discard all the display lists that have been loaded from the document, possibly freeing some memory in the case of a huge document.</span></div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a17bcd16383e9f14dfd7124da4fd5861b">  584</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a17bcd16383e9f14dfd7124da4fd5861b">ClearCache</a>()</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>        {</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; PageCount; i++)</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span>            {</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span>                DisplayLists[i]?.Dispose();</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span>                DisplayLists[i] = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>            }</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span>        }</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span><span class="comment"></span> </div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span><span class="comment">        /// Render (part of) a page to an array of bytes.</span></div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region of the page to render in page units.&lt;/param&gt;</span></div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span><span class="comment">        /// &lt;returns&gt;A byte array containing the raw values for the pixels of the rendered image.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">  602</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">byte</span>[] <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span>        {</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span>            {</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span>            }</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span> </div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span>            <span class="keywordtype">int</span> bufferSize = <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html">MuPDFDocument</a>.<a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">GetRenderedSize</a>(region, zoom, pixelFormat);</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span> </div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span>            <span class="keywordtype">byte</span>[] buffer = <span class="keyword">new</span> <span class="keywordtype">byte</span>[bufferSize];</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span> </div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span>            GCHandle bufferHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span>            IntPtr bufferPointer = bufferHandle.AddrOfPinnedObject();</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span> </div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span>            <span class="keywordflow">try</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span>            {</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span>                <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(pageNumber, region, zoom, pixelFormat, bufferPointer, includeAnnotations);</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span>            }</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span>            <span class="keywordflow">finally</span></div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>            {</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span>                bufferHandle.Free();</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span>            }</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span> </div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span>            <span class="keywordflow">return</span> buffer;</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span>        }</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span><span class="comment"></span> </div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span><span class="comment">        /// Render a page to an array of bytes.</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span><span class="comment">        /// &lt;returns&gt;A byte array containing the raw values for the pixels of the rendered image.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a9eeca1ba2ab6d8ec59e0eb62aa7b0632">  636</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">byte</span>[] <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a9eeca1ba2ab6d8ec59e0eb62aa7b0632">Render</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span>        {</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>            {</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span>            }</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span> </div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(pageNumber, region, zoom, pixelFormat, includeAnnotations);</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span>        }</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span><span class="comment"></span> </div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span><span class="comment">        /// Render (part of) a page to the specified destination.</span></div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region of the page to render in page units.&lt;/param&gt;</span></div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span><span class="comment">        /// &lt;param name=&quot;destination&quot;&gt;The address of the buffer where the pixel data will be written. There must be enough space available to write the values for all the pixels, otherwise this will fail catastrophically!&lt;/param&gt;</span></div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a440fc7f8dc82f8e007e1e1327e13bbcd">  656</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a440fc7f8dc82f8e007e1e1327e13bbcd">Render</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, IntPtr destination, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span>        {</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span>            {</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span>            }</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span> </div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span>            {</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>            }</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span> </div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>            <span class="keywordflow">if</span> (zoom &lt; 0.000001 | zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a4ea4052094e051b974b7ca1bc9346655">Width</a> &lt;= 0.001 || zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5a06dd7d57268bdf22b5ce741b9dbf4e">Height</a> &lt;= 0.001)</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span>            {</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentOutOfRangeException(nameof(zoom), zoom, <span class="stringliteral">&quot;The zoom factor is too small!&quot;</span>);</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span>            }</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span> </div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span>            <span class="keywordflow">if</span> (this.ImageXRes != 72 || this.ImageYRes != 72)</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span>            {</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span>                zoom *= Math.Sqrt(this.ImageXRes * this.ImageYRes) / 72;</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span>                region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / <span class="keyword">this</span>.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / <span class="keyword">this</span>.ImageYRes);</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>            }</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span>            <span class="keywordtype">float</span> fzoom = (float)zoom;</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span> </div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.RenderSubDisplayList(OwnerContext.NativeContext, DisplayLists[pageNumber].NativeDisplayList, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a>, fzoom, (<span class="keywordtype">int</span>)pixelFormat, destination, IntPtr.Zero);</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span> </div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span>            {</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_RENDER:</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot render page&quot;</span>, result);</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span>            }</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span> </div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html">RoundedRectangle</a> roundedRegion = region.<a class="code hl_function" href="struct_mu_p_d_f_core_1_1_rectangle.html#a27cf4d4747a8677f8103746ee3386595">Round</a>(fzoom);</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rounded_size.html">RoundedSize</a> roundedSize = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rounded_size.html">RoundedSize</a>(roundedRegion.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a29904ab0820872c48e43631ece9f1fff">Width</a>, roundedRegion.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a73d75f9e5e23910ee0a4078eec4980c9">Height</a>);</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span> </div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span>            <span class="keywordflow">if</span> (pixelFormat == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.RGBA || pixelFormat == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.BGRA)</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span>            {</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span>                Utils.UnpremultiplyAlpha(destination, roundedSize);</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span>            }</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span> </div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span>            <span class="keywordflow">if</span> (this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4e7f89e98170b4cb9e88e6bf63f2da57">ClipToPageBounds</a> &amp;&amp; !<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds.Contains(DisplayLists[pageNumber].Bounds.Intersect(region)))</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno">  702</span>            {</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span>                Utils.ClipImage(destination, roundedSize, region, <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds, pixelFormat);</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno">  704</span>            }</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno">  705</span>        }</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span><span class="comment"></span> </div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno">  707</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno">  708</span><span class="comment">        /// Render a page to the specified destination.</span></div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno">  709</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno">  710</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno">  711</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span><span class="comment">        /// &lt;param name=&quot;destination&quot;&gt;The address of the buffer where the pixel data will be written. There must be enough space available to write the values for all the pixels, otherwise this will fail catastrophically!&lt;/param&gt;</span></div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno">  714</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adb5535ea11620c818469bc7d03512d1c">  715</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adb5535ea11620c818469bc7d03512d1c">Render</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, IntPtr destination, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno">  716</span>        {</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno">  717</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno">  718</span>            {</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno">  719</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno">  720</span>            }</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno">  721</span> </div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno">  722</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno">  723</span>            <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(pageNumber, region, zoom, pixelFormat, destination, includeAnnotations);</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno">  724</span>        }</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno">  725</span><span class="comment"></span> </div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno">  726</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno">  727</span><span class="comment">        /// Render (part of) a page to a &lt;see cref=&quot;Span{T}&quot;&gt;Span&lt;/see&gt;&amp;lt;&lt;see cref=&quot;byte&quot;/&gt;&amp;gt;.</span></div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno">  728</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno">  729</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno">  730</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region of the page to render in page units.&lt;/param&gt;</span></div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno">  731</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno">  732</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno">  733</span><span class="comment">        /// &lt;param name=&quot;disposable&quot;&gt;An &lt;see cref=&quot;IDisposable&quot;/&gt; that can be used to free the memory where the image is stored. You should keep track of this and dispose it when you have finished working with the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno">  734</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4257311e4fab32a4713d55c1d5ad5dc7">  735</a></span><span class="comment"></span>        <span class="keyword">public</span> Span&lt;byte&gt; <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4257311e4fab32a4713d55c1d5ad5dc7">Render</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, out IDisposable disposable, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno">  736</span>        {</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno">  737</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno">  738</span>            {</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno">  739</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno">  740</span>            }</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno">  741</span> </div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno">  742</span>            <span class="keywordtype">int</span> dataSize = <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">GetRenderedSize</a>(region, zoom, pixelFormat);</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno">  743</span> </div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno">  744</span>            IntPtr destination = Marshal.AllocHGlobal(dataSize);</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno">  745</span>            disposable = <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_disposable_int_ptr.html">DisposableIntPtr</a>(destination, dataSize);</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno">  746</span> </div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno">  747</span>            this.<a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(pageNumber, region, zoom, pixelFormat, destination, includeAnnotations);</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno">  748</span> </div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno">  749</span>            unsafe</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno">  750</span>            {</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno">  751</span>                <span class="keywordflow">return</span> <span class="keyword">new</span> Span&lt;byte&gt;((<span class="keywordtype">void</span>*)destination, dataSize);</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno">  752</span>            }</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno">  753</span>        }</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno">  754</span><span class="comment"></span> </div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno">  755</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno">  756</span><span class="comment">        /// Render a page to a &lt;see cref=&quot;Span{T}&quot;&gt;Span&lt;/see&gt;&amp;lt;&lt;see cref=&quot;byte&quot;/&gt;&amp;gt;.</span></div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno">  757</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno">  758</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno">  759</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno">  760</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno">  761</span><span class="comment">        /// &lt;param name=&quot;disposable&quot;&gt;An &lt;see cref=&quot;IDisposable&quot;/&gt; that can be used to free the memory where the image is stored. You should keep track of this and dispose it when you have finished working with the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno">  762</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab73256bd4480296f64fa136343366764">  763</a></span><span class="comment"></span>        <span class="keyword">public</span> Span&lt;byte&gt; <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab73256bd4480296f64fa136343366764">Render</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, out IDisposable disposable, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno">  764</span>        {</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno">  765</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno">  766</span>            {</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno">  767</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno">  768</span>            }</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno">  769</span> </div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno">  770</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno">  771</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">Render</a>(pageNumber, region, zoom, pixelFormat, out disposable, includeAnnotations);</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno">  772</span>        }</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno">  773</span> </div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno">  774</span><span class="comment"></span> </div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno">  776</span><span class="comment">        /// Create a new &lt;see cref=&quot;MuPDFMultiThreadedPageRenderer&quot;/&gt; that renders the specified page with the specified number of threads.</span></div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno">  777</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno">  778</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno">  779</span><span class="comment">        /// &lt;param name=&quot;threadCount&quot;&gt;The number of threads to use. This must be factorisable using only powers of 2, 3, 5 or 7. Otherwise, the biggest number smaller than &lt;paramref name=&quot;threadCount&quot;/&gt; that satisfies this condition is used.&lt;/param&gt;</span></div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno">  780</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;MuPDFMultiThreadedPageRenderer&quot;/&gt; that can be used to render the specified page with the specified number of threads.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno">  781</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5ea3701940cdfa3ca26676516a70bede">  782</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_multi_threaded_page_renderer.html">MuPDFMultiThreadedPageRenderer</a> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5ea3701940cdfa3ca26676516a70bede">GetMultiThreadedRenderer</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">int</span> threadCount, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno">  783</span>        {</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno">  784</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno">  785</span>            {</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno">  786</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno">  787</span>            }</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno">  788</span> </div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno">  789</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno">  790</span>            {</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno">  791</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno">  792</span>            }</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno">  793</span> </div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno">  794</span>            <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_multi_threaded_page_renderer.html">MuPDFMultiThreadedPageRenderer</a>(OwnerContext, DisplayLists[pageNumber], threadCount, <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4e7f89e98170b4cb9e88e6bf63f2da57">ClipToPageBounds</a>, this.ImageXRes, this.ImageYRes);</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno">  795</span>        }</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno">  796</span><span class="comment"></span> </div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno">  797</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno">  798</span><span class="comment">        /// Determine how many bytes will be necessary to render the specified page at the specified zoom level, using the the specified pixel format.</span></div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno">  799</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno">  800</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno">  801</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno">  802</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixels data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno">  803</span><span class="comment">        /// &lt;returns&gt;An integer representing the number of bytes that will be necessary to store the pixel data of the rendered image.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">  804</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">GetRenderedSize</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat)</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno">  805</span>        {</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno">  806</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno">  807</span>            {</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno">  808</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno">  809</span>            }</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno">  810</span> </div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno">  811</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">GetRenderedSize</a>(<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds, zoom, pixelFormat);</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno">  812</span>        }</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno">  813</span><span class="comment"></span> </div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno">  814</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno">  815</span><span class="comment">        /// Determine how many bytes will be necessary to render the specified region in page units at the specified zoom level, using the the specified pixel format.</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno">  816</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno">  817</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region that will be rendered.&lt;/param&gt;</span></div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno">  818</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the region will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno">  819</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixels data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno">  820</span><span class="comment">        /// &lt;returns&gt;An integer representing the number of bytes that will be necessary to store the pixel data of the rendered image.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0956211d754de68c12a772b6f33cf43b">  821</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0956211d754de68c12a772b6f33cf43b">GetRenderedSize</a>(<a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat)</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span>        {</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno">  823</span>            <span class="keywordtype">float</span> x0 = region.X0 * (float)zoom;</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno">  824</span>            <span class="keywordtype">float</span> y0 = region.Y0 * (float)zoom;</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno">  825</span>            <span class="keywordtype">float</span> x1 = region.X1 * (float)zoom;</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno">  826</span>            <span class="keywordtype">float</span> y1 = region.Y1 * (float)zoom;</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span> </div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno">  828</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> scaledRect = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(x0, y0, x1, y1);</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html">RoundedRectangle</a> bounds = scaledRect.Round();</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno">  830</span> </div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno">  831</span>            <span class="keywordtype">int</span> width = bounds.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a29904ab0820872c48e43631ece9f1fff">Width</a>;</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span>            <span class="keywordtype">int</span> height = bounds.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a73d75f9e5e23910ee0a4078eec4980c9">Height</a>;</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno">  833</span> </div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno">  834</span>            <span class="keywordflow">switch</span> (pixelFormat)</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span>            {</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno">  836</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.RGB:</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.BGR:</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>                    <span class="keywordflow">return</span> width * height * 3;</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.RGBA:</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.BGRA:</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span>                    <span class="keywordflow">return</span> width * height * 4;</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>            }</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span> </div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>            <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span>        }</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno">  846</span><span class="comment"></span> </div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno">  848</span><span class="comment">        /// Save (part of) a page to an image file in the specified format.</span></div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno">  849</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno">  850</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno">  851</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region of the page to render in page units.&lt;/param&gt;</span></div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno">  852</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno">  853</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno">  854</span><span class="comment">        /// &lt;param name=&quot;fileName&quot;&gt;The path to the output file.&lt;/param&gt;</span></div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output format of the file.&lt;/param&gt;</span></div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno">  856</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5325407c802fd33982766295e4f3562c">  857</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5325407c802fd33982766295e4f3562c">SaveImage</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, <span class="keywordtype">string</span> fileName, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno">  858</span>        {</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno">  859</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno">  860</span>            {</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno">  861</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno">  862</span>            }</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno">  863</span> </div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno">  864</span>            <span class="keywordflow">if</span> (pixelFormat == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.RGBA &amp;&amp; fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a>.PNM)</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno">  865</span>            {</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentException(<span class="stringliteral">&quot;Cannot save an image with alpha channel in PNM format!&quot;</span>, nameof(fileType));</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno">  867</span>            }</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno">  868</span> </div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno">  870</span>            {</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno">  871</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno">  872</span>            }</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno">  873</span> </div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno">  874</span>            <span class="keywordflow">if</span> (zoom &lt; 0.000001 | zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a4ea4052094e051b974b7ca1bc9346655">Width</a> &lt;= 0.001 || zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5a06dd7d57268bdf22b5ce741b9dbf4e">Height</a> &lt;= 0.001)</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span>            {</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno">  876</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentOutOfRangeException(nameof(zoom), zoom, <span class="stringliteral">&quot;The zoom factor is too small!&quot;</span>);</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno">  877</span>            }</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno">  878</span> </div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno">  879</span>            <span class="keywordflow">if</span> (this.ImageXRes != 72 || this.ImageYRes != 72)</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno">  880</span>            {</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno">  881</span>                zoom *= Math.Sqrt(this.ImageXRes * this.ImageYRes) / 72;</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno">  882</span>                region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / <span class="keyword">this</span>.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / <span class="keyword">this</span>.ImageYRes);</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span>            }</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span> </div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno">  885</span>            <span class="keywordtype">float</span> fzoom = (float)zoom;</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno">  886</span> </div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno">  887</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result;</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno">  888</span> </div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno">  889</span>            <span class="keyword">using</span> (UTF8EncodedString encodedFileName = <span class="keyword">new</span> UTF8EncodedString(fileName))</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno">  890</span>            {</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno">  891</span>                result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.SaveImage(OwnerContext.NativeContext, DisplayLists[pageNumber].NativeDisplayList, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a>, fzoom, (<span class="keywordtype">int</span>)pixelFormat, encodedFileName.Address, (int)fileType);</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno">  892</span>            }</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno">  893</span> </div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno">  894</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno">  895</span>            {</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno">  897</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno">  898</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_RENDER:</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno">  899</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot render page&quot;</span>, result);</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno">  900</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_SAVE:</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno">  901</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot save to the output file&quot;</span>, result);</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno">  902</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno">  903</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno">  904</span>            }</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno">  905</span>        }</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno">  906</span><span class="comment"></span> </div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno">  907</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno">  908</span><span class="comment">        /// Save a page to an image file in the specified format.</span></div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno">  909</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno">  910</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno">  911</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno">  912</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno">  913</span><span class="comment">        /// &lt;param name=&quot;fileName&quot;&gt;The path to the output file.&lt;/param&gt;</span></div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno">  914</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output format of the file.&lt;/param&gt;</span></div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno">  915</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a076f5938453f1828e29db9046fa58b4d">  916</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a076f5938453f1828e29db9046fa58b4d">SaveImage</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, <span class="keywordtype">string</span> fileName, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno">  917</span>        {</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno">  918</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno">  919</span>            {</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno">  920</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno">  921</span>            }</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno">  922</span> </div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno">  923</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno">  924</span>            <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5325407c802fd33982766295e4f3562c">SaveImage</a>(pageNumber, region, zoom, pixelFormat, fileName, fileType, includeAnnotations);</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno">  925</span>        }</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno">  926</span><span class="comment"></span> </div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno">  927</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno">  928</span><span class="comment">        /// Write (part of) a page to an image stream in the specified format.</span></div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno">  929</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno">  930</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno">  931</span><span class="comment">        /// &lt;param name=&quot;region&quot;&gt;The region of the page to render in page units.&lt;/param&gt;</span></div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno">  932</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno">  933</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno">  934</span><span class="comment">        /// &lt;param name=&quot;outputStream&quot;&gt;The stream to which the image data will be written.&lt;/param&gt;</span></div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno">  935</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output format of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno">  936</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac0264349fe3b2ccc319f0978c448ff11">  937</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac0264349fe3b2ccc319f0978c448ff11">WriteImage</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, Stream outputStream, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno">  938</span>        {</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno">  939</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno">  940</span>            {</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno">  941</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno">  942</span>            }</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno">  943</span> </div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno">  944</span>            <span class="keywordflow">if</span> (pixelFormat == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a>.RGBA &amp;&amp; fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a>.PNM)</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno">  945</span>            {</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno">  946</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentException(<span class="stringliteral">&quot;Cannot save an image with alpha channel in PNM format!&quot;</span>, nameof(fileType));</div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno">  947</span>            }</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno">  948</span> </div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno">  949</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno">  950</span>            {</div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno">  951</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno">  952</span>            }</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno">  953</span> </div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno">  954</span>            <span class="keywordflow">if</span> (zoom &lt; 0.000001 | zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a4ea4052094e051b974b7ca1bc9346655">Width</a> &lt;= 0.001 || zoom * region.<a class="code hl_property" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5a06dd7d57268bdf22b5ce741b9dbf4e">Height</a> &lt;= 0.001)</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno">  955</span>            {</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno">  956</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentOutOfRangeException(nameof(zoom), zoom, <span class="stringliteral">&quot;The zoom factor is too small!&quot;</span>);</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno">  957</span>            }</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno">  958</span> </div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno">  959</span>            <span class="keywordflow">if</span> (this.ImageXRes != 72 || this.ImageYRes != 72)</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno">  960</span>            {</div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno">  961</span>                zoom *= Math.Sqrt(this.ImageXRes * this.ImageYRes) / 72;</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno">  962</span>                region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / <span class="keyword">this</span>.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / <span class="keyword">this</span>.ImageYRes);</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno">  963</span>            }</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno">  964</span> </div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno">  965</span>            <span class="keywordtype">float</span> fzoom = (float)zoom;</div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno">  966</span> </div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno">  967</span>            IntPtr outputBuffer = IntPtr.Zero;</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno">  968</span>            IntPtr outputData = IntPtr.Zero;</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno">  969</span>            ulong outputDataLength = 0;</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno">  970</span> </div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno">  971</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.WriteImage(OwnerContext.NativeContext, DisplayLists[pageNumber].NativeDisplayList, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a>, fzoom, (<span class="keywordtype">int</span>)pixelFormat, (int)fileType, ref outputBuffer, ref outputData, ref outputDataLength);</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno">  972</span> </div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno">  973</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span>            {</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno">  975</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno">  976</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno">  977</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_RENDER:</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno">  978</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot render page&quot;</span>, result);</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno">  979</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_CREATE_CONTEXT:</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno">  980</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot create the output buffer&quot;</span>, result);</div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno">  981</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno">  982</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno">  983</span>            }</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno">  984</span> </div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno">  985</span>            <span class="keywordtype">byte</span>[] buffer = <span class="keyword">new</span> <span class="keywordtype">byte</span>[1024];</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno">  986</span> </div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno">  987</span>            <span class="keywordflow">while</span> (outputDataLength &gt; 0)</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno">  988</span>            {</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno">  989</span>                <span class="keywordtype">int</span> bytesToCopy = (int)Math.Min(buffer.Length, (<span class="keywordtype">long</span>)outputDataLength);</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno">  990</span>                Marshal.Copy(outputData, buffer, 0, bytesToCopy);</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno">  991</span>                outputData = IntPtr.Add(outputData, bytesToCopy);</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno">  992</span>                outputStream.Write(buffer, 0, bytesToCopy);</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno">  993</span>                outputDataLength -= (ulong)bytesToCopy;</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno">  994</span>            }</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno">  995</span> </div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span>            NativeMethods.DisposeBuffer(OwnerContext.NativeContext, outputBuffer);</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno">  997</span>        }</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span><span class="comment"></span> </div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno">  999</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span><span class="comment">        /// Write a page to an image stream in the specified format.</span></div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page to render (starting at 0).&lt;/param&gt;</span></div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span><span class="comment">        /// &lt;param name=&quot;zoom&quot;&gt;The scale at which the page will be rendered. This will determine the size in pixel of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span><span class="comment">        /// &lt;param name=&quot;pixelFormat&quot;&gt;The format of the pixel data.&lt;/param&gt;</span></div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span><span class="comment">        /// &lt;param name=&quot;outputStream&quot;&gt;The stream to which the image data will be written.&lt;/param&gt;</span></div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output format of the image.&lt;/param&gt;</span></div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab42e60e523a9a3fefc665c6b800cb3ec"> 1008</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab42e60e523a9a3fefc665c6b800cb3ec">WriteImage</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">double</span> zoom, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">PixelFormats</a> pixelFormat, Stream outputStream, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">RasterOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span>        {</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span>            {</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span>            }</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> </div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span>            <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac0264349fe3b2ccc319f0978c448ff11">WriteImage</a>(pageNumber, region, zoom, pixelFormat, outputStream, fileType, includeAnnotations);</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span>        }</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span><span class="comment"></span> </div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span><span class="comment">        /// Create a new document containing the specified (parts of) pages from other documents.</span></div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that was used to open the documents.&lt;/param&gt;</span></div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span><span class="comment">        /// &lt;param name=&quot;fileName&quot;&gt;The output file name.&lt;/param&gt;</span></div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output file format.&lt;/param&gt;</span></div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span><span class="comment">        /// &lt;param name=&quot;pages&quot;&gt;The pages to include in the document. The &quot;page&quot; element specifies the page, the &quot;region&quot; element the area of the page that should be included in the document, and the &quot;zoom&quot; element how much the region should be scaled.&lt;/param&gt;</span></div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a69aa759f9a0458612fece2851310d76e"> 1027</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a69aa759f9a0458612fece2851310d76e">CreateDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, <span class="keywordtype">string</span> fileName, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">DocumentOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>, params (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page.html">MuPDFPage</a> page, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region, <span class="keywordtype">float</span> zoom)[] pages)</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span>        {</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span>            <span class="keywordflow">if</span> (fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">DocumentOutputFileTypes</a>.SVG &amp;&amp; pages.Length &gt; 1)</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span>            {</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span>                <span class="comment">//Actually, you can, but the library creates multiple files appending numbers after each name (e.g. page1.svg, page2.svg, ...), which is ugly and may have unintended consequences.</span></div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span>                <span class="comment">//If you really want to do this, you can call this method multiple times.</span></div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentException(<span class="stringliteral">&quot;You cannot create an SVG document with more than one page!&quot;</span>, nameof(pages));</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>            }</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> </div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>            <span class="keywordtype">string</span> originalFileName = fileName;</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> </div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span>            <span class="keywordflow">if</span> (fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">DocumentOutputFileTypes</a>.SVG)</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span>            {</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span>                <span class="comment">//For SVG documents, the library annoyingly alters the output file name, appending a &quot;1&quot; just before the extension (e.g. document.svg -&gt; document1.svg). Since users may not be expecting this, it is best to render to a temporary file and then move it to the specified location.</span></div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span>                fileName = Path.GetTempFileName();</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span>            }</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> </div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span>            IntPtr documentWriter = IntPtr.Zero;</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> </div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span>            <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a> result;</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> </div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span>            <span class="comment">// Encode the file name in UTF-8 in unmanaged memory.</span></div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>            <span class="keyword">using</span> (UTF8EncodedString encodedFileName = <span class="keyword">new</span> UTF8EncodedString(fileName))</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span>            {</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span>                <span class="comment">//Initialise document writer.</span></div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span>                result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.CreateDocumentWriter(context.NativeContext, encodedFileName.Address, (<span class="keywordtype">int</span>)fileType, ref documentWriter);</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span>            }</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> </div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span>            {</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_CREATE_WRITER:</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot create the document writer&quot;</span>, result);</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span>            }</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> </div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span>            <span class="comment">//Write pages.</span></div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pages.Length; i++)</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span>            {</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span>                <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html">MuPDFDocument</a> doc = pages[i].page.OwnerDocument;</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span>                <span class="keywordtype">int</span> pageNum = pages[i].page.PageNumber;</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> </div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span>                <span class="keywordflow">if</span> (doc.DisplayLists[pageNum] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span>                {</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span>                    doc.DisplayLists[pageNum] = <span class="keyword">new</span> MuPDFDisplayList(doc.OwnerContext, doc.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNum], includeAnnotations);</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span>                }</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> </div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span>                <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = pages[i].region;</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span>                <span class="keywordtype">double</span> zoom = pages[i].zoom;</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> </div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>                <span class="keywordflow">if</span> (pages[i].page.OwnerDocument.ImageXRes != 72 || pages[i].page.OwnerDocument.ImageYRes != 72)</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span>                {</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span>                    zoom *= Math.Sqrt(pages[i].page.OwnerDocument.ImageXRes * pages[i].page.OwnerDocument.ImageYRes) / 72;</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>                    region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / pages[i].page.OwnerDocument.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / pages[i].page.OwnerDocument.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / pages[i].page.OwnerDocument.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / pages[i].page.OwnerDocument.ImageYRes);</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span>                }</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> </div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span>                result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.WriteSubDisplayListAsPage(context.NativeContext, doc.DisplayLists[pageNum].NativeDisplayList, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a>, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a>, (<span class="keywordtype">float</span>)zoom, documentWriter);</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> </div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span>                <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span>                {</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span>                    <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span>                        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>                    <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_RENDER:</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>                        <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot render page &quot;</span> + i.ToString(), result);</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>                    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span>                        <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span>                }</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span>            }</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> </div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span>            <span class="comment">//Close and dispose the document writer.</span></div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span>            result = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>)NativeMethods.FinalizeDocumentWriter(context.NativeContext, documentWriter);</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> </div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span>            {</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.EXIT_SUCCESS:</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>                <span class="keywordflow">case</span> <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">ExitCodes</a>.ERR_CANNOT_CLOSE_DOCUMENT:</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Cannot finalise the document&quot;</span>, result);</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFException</a>(<span class="stringliteral">&quot;Unknown error&quot;</span>, result);</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span>            }</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> </div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span>            <span class="keywordflow">if</span> (fileType == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">DocumentOutputFileTypes</a>.SVG)</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span>            {</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span>                <span class="comment">//Move the temporary file to the location specified by the user.</span></div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span>                <span class="comment">//The library has altered the temporary file name by appending a &quot;1&quot; before the extension.</span></div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span>                <span class="keywordtype">string</span> tempFileName = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + <span class="stringliteral">&quot;1&quot;</span> + Path.GetExtension(fileName));</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> </div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span>                <span class="comment">//Overwrite existing file.</span></div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span>                <span class="keywordflow">if</span> (File.Exists(originalFileName))</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span>                {</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span>                    File.Delete(originalFileName);</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>                }</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> </div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span>                File.Move(tempFileName, originalFileName);</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span>            }</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span>        }</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span><span class="comment"></span> </div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span><span class="comment">        /// Create a new document containing the specified pages from other documents.</span></div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span><span class="comment">        /// &lt;param name=&quot;context&quot;&gt;The context that was used to open the documents.&lt;/param&gt;</span></div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span><span class="comment">        /// &lt;param name=&quot;fileName&quot;&gt;The output file name.&lt;/param&gt;</span></div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span><span class="comment">        /// &lt;param name=&quot;fileType&quot;&gt;The output file format.&lt;/param&gt;</span></div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span><span class="comment">        /// &lt;param name=&quot;pages&quot;&gt;The pages to include in the document.&lt;/param&gt;</span></div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included in the display list that is generated. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ae82f87c8f0e98b2b6b3186b1ed7bba93"> 1135</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ae82f87c8f0e98b2b6b3186b1ed7bba93">CreateDocument</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFContext</a> context, <span class="keywordtype">string</span> fileName, <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">DocumentOutputFileTypes</a> fileType, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>, params <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page.html">MuPDFPage</a>[] pages)</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span>        {</div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span>            (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page.html">MuPDFPage</a>, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>, float)[] boundedPages = <span class="keyword">new</span> (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page.html">MuPDFPage</a>, <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>, <span class="keywordtype">float</span>)[pages.Length];</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> </div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pages.Length; i++)</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span>            {</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span>                boundedPages[i] = (pages[i], pages[i].Bounds, 1);</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span>            }</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> </div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span>            <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a69aa759f9a0458612fece2851310d76e">CreateDocument</a>(context, fileName, fileType, includeAnnotations, boundedPages);</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span>        }</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> </div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span><span class="comment"></span> </div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span><span class="comment">        /// Creates a new &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; from the specified page. This contains information about the text layout that can be used for highlighting and searching. The reading order is taken from the order the text is drawn in the source file, so may not be accurate.</span></div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page (starting at 0)&lt;/param&gt;</span></div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; containing a structured text representation of the page.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6a55fe2639c8e092f26fb2139e878754"> 1154</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6a55fe2639c8e092f26fb2139e878754">GetStructuredTextPage</a>(<span class="keywordtype">int</span> pageNumber, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span>        {</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span>            {</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span>            }</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> </div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span>            {</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span>            }</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> </div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span>            <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a>(this.OwnerContext, this.DisplayLists[pageNumber], <span class="keyword">null</span>, 1, <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>());</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span>        }</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span><span class="comment"></span> </div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span><span class="comment">        /// Creates a new &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; from the specified page, using optical character recognition (OCR) to determine what text is written on the image. This contains information about the text layout that can be used for highlighting and searching.</span></div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page (starting at 0)&lt;/param&gt;</span></div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span><span class="comment">        /// &lt;param name=&quot;ocrLanguage&quot;&gt;The language to use for optical character recognition (OCR). If this is null, no OCR is performed.&lt;/param&gt;</span></div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span><span class="comment">        /// &lt;param name=&quot;cancellationToken&quot;&gt;A &lt;see cref=&quot;CancellationToken&quot;/&gt; used to cancel the operation. Providing a value other than the default is not supported on Windows x86 and will throw a runtime exception.&lt;/param&gt;</span></div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span><span class="comment">        /// &lt;param name=&quot;progress&quot;&gt;An &lt;see cref=&quot;IProgress{OCRProgressInfo}&quot;/&gt; used to report progress. Providing a value other than null is not supported on Windows x86 and will throw a runtime exception.&lt;/param&gt;</span></div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; containing a structured text representation of the page.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a2256e773c3781a8c787af014f807d496"> 1178</a></span><span class="comment"></span>        <span class="keyword">public</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a2256e773c3781a8c787af014f807d496">GetStructuredTextPage</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_class" href="class_mu_p_d_f_core_1_1_tesseract_language.html">TesseractLanguage</a> ocrLanguage, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>, CancellationToken cancellationToken = <span class="keywordflow">default</span>, IProgress&lt;OCRProgressInfo&gt; progress = <span class="keyword">null</span>)</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span>        {</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span>            {</div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span>            }</div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> </div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span>            {</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span>            }</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> </div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span>            <span class="keywordtype">double</span> zoom = 1;</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> </div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span>            <span class="keywordflow">if</span> (this.ImageXRes != 72 || this.ImageYRes != 72)</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span>            {</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span>                zoom *= Math.Sqrt(this.ImageXRes * this.ImageYRes) / 72;</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span>                region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / <span class="keyword">this</span>.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / <span class="keyword">this</span>.ImageYRes);</div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span>            }</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> </div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span>            <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a>(this.OwnerContext, this.DisplayLists[pageNumber], ocrLanguage, zoom, region, cancellationToken, progress);</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span>        }</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span><span class="comment"></span> </div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span><span class="comment">        /// Creates a new &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; from the specified page, using optical character recognition (OCR) to determine what text is written on the image. This contains information about the text layout that can be used for highlighting and searching. The OCR step is run asynchronously, e.g. to avoid blocking the UI thread.</span></div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span><span class="comment">        /// &lt;param name=&quot;pageNumber&quot;&gt;The number of the page (starting at 0)&lt;/param&gt;</span></div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span><span class="comment">        /// &lt;param name=&quot;ocrLanguage&quot;&gt;The language to use for optical character recognition (OCR). If this is null, no OCR is performed.&lt;/param&gt;</span></div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span><span class="comment">        /// &lt;param name=&quot;cancellationToken&quot;&gt;A &lt;see cref=&quot;CancellationToken&quot;/&gt; used to cancel the operation. Providing a value other than the default is not supported on Windows x86 and will throw a runtime exception.&lt;/param&gt;</span></div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span><span class="comment">        /// &lt;param name=&quot;progress&quot;&gt;An &lt;see cref=&quot;IProgress{OCRProgressInfo}&quot;/&gt; used to report progress. Providing a value other than null is not supported on Windows x86 and will throw a runtime exception.&lt;/param&gt;</span></div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;MuPDFStructuredTextPage&quot;/&gt; containing a structured text representation of the page.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab74eca1ade08acd6c1c6a02f86b4129e"> 1211</a></span><span class="comment"></span>        <span class="keyword">public</span> async Task&lt;MuPDFStructuredTextPage&gt; <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab74eca1ade08acd6c1c6a02f86b4129e">GetStructuredTextPageAsync</a>(<span class="keywordtype">int</span> pageNumber, <a class="code hl_class" href="class_mu_p_d_f_core_1_1_tesseract_language.html">TesseractLanguage</a> ocrLanguage, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>, CancellationToken cancellationToken = <span class="keywordflow">default</span>, IProgress&lt;OCRProgressInfo&gt; progress = <span class="keyword">null</span>)</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span>        {</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span>            {</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span>            }</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> </div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span>            <span class="keywordflow">if</span> (DisplayLists[pageNumber] == <span class="keyword">null</span>)</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span>            {</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span>                DisplayLists[pageNumber] = <span class="keyword">new</span> MuPDFDisplayList(this.OwnerContext, this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber], includeAnnotations);</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span>            }</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> </div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span>            <span class="keywordtype">double</span> zoom = 1;</div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span>            <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a> region = this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>[pageNumber].Bounds;</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> </div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span>            <span class="keywordflow">if</span> (this.ImageXRes != 72 || this.ImageYRes != 72)</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span>            {</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span>                zoom *= Math.Sqrt(this.ImageXRes * this.ImageYRes) / 72;</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span>                region = <span class="keyword">new</span> <a class="code hl_struct" href="struct_mu_p_d_f_core_1_1_rectangle.html">Rectangle</a>(region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">X0</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">Y0</a> * 72 / <span class="keyword">this</span>.ImageYRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">X1</a> * 72 / <span class="keyword">this</span>.ImageXRes, region.<a class="code hl_variable" href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">Y1</a> * 72 / <span class="keyword">this</span>.ImageYRes);</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span>            }</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> </div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span>            <span class="keywordflow">return</span> await Task.Run(() =&gt; <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a>(this.OwnerContext, this.DisplayLists[pageNumber], ocrLanguage, zoom, region, cancellationToken, progress));</div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span>        }</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span><span class="comment"></span> </div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span><span class="comment">        /// Extracts all the text from the document and returns it as a &lt;see cref=&quot;string&quot;/&gt;. The reading order is taken from the order the text is drawn in the source file, so may not be accurate.</span></div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span><span class="comment">        /// &lt;param name=&quot;separator&quot;&gt;The character(s) used to separate the text lines obtained from the document. If this is &lt;see langword=&quot;null&quot; /&gt;, &lt;see cref=&quot;Environment.NewLine&quot;/&gt; is used as a default separator.&lt;/param&gt;</span></div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;string&quot;/&gt; containing all the text in the document. Characters are converted from the UTF-8 representation used in the document to equivalent UTF-16 &lt;see cref=&quot;string&quot;/&gt;s.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a70387793b8634c7cdda9d4c9f6c23de2"> 1241</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">string</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a70387793b8634c7cdda9d4c9f6c23de2">ExtractText</a>(<span class="keywordtype">string</span> separator = <span class="keyword">null</span>, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span>        {</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span>            {</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span>            }</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> </div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span>            separator = separator ?? Environment.NewLine;</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> </div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span>            var text = <span class="keyword">new</span> StringBuilder();</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span>            <span class="keywordtype">bool</span> started = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> </div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html#afad08aeacd9f27416dd193809fc4fd75">Count</a>; i++)</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span>            {</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span>                <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a> structuredTextPage = this.<a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6a55fe2639c8e092f26fb2139e878754">GetStructuredTextPage</a>(i, includeAnnotations);</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span>                <span class="keywordflow">foreach</span> (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html">MuPDFStructuredTextBlock</a> textBlock <span class="keywordflow">in</span> structuredTextPage.StructuredTextBlocks)</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span>                {</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span>                    var numLines = textBlock.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html#a66bfcd689c26fa6e9a56090788a4058a">Count</a>;</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span>                    <span class="keywordflow">for</span> (var j = 0; j &lt; numLines; j++)</div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span>                    {</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span>                        <span class="keywordflow">if</span> (!<span class="keywordtype">string</span>.IsNullOrWhiteSpace(textBlock[j].Text))</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span>                        {</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span>                            <span class="keywordflow">if</span> (started)</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span>                            {</div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span>                                text.Append(separator);</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span>                            }</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span>                            <span class="keywordflow">else</span></div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span>                            {</div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span>                                started = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span>                            }</div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> </div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span>                            text.Append(textBlock[j].Text);</div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span>                        }</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span>                    }</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span>                }</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span>            }</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> </div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span>            <span class="keywordflow">return</span> text.ToString();</div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span>        }</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span><span class="comment"></span> </div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span><span class="comment">        /// Extracts all the text from the document and returns it as a &lt;see cref=&quot;string&quot;/&gt;, using optical character recognition (OCR) to determine what text is written on the image.</span></div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span><span class="comment">        /// &lt;param name=&quot;separator&quot;&gt;The character(s) used to separate the text lines obtained from the document. If this is &lt;see langword=&quot;null&quot; /&gt;, &lt;see cref=&quot;Environment.NewLine&quot;/&gt; is used as a default separator.&lt;/param&gt;</span></div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span><span class="comment">        /// &lt;param name=&quot;ocrLanguage&quot;&gt;The language to use for optical character recognition (OCR). If this is null, no OCR is performed.&lt;/param&gt;</span></div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;string&quot;/&gt; containing all the text in the document. Characters are converted from the UTF-8 representation used in the document to equivalent UTF-16 &lt;see cref=&quot;string&quot;/&gt;s.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adec1ed3c29832eb920dd86508b78cbc4"> 1288</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">string</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adec1ed3c29832eb920dd86508b78cbc4">ExtractText</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_tesseract_language.html">TesseractLanguage</a> ocrLanguage, <span class="keywordtype">string</span> separator = <span class="keyword">null</span>, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>)</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span>        {</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span>            {</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span>            }</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> </div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span>            separator = separator ?? Environment.NewLine;</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> </div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span>            var text = <span class="keyword">new</span> StringBuilder();</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span>            <span class="keywordtype">bool</span> started = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> </div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html#afad08aeacd9f27416dd193809fc4fd75">Count</a>; i++)</div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span>            {</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span>                <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a> structuredTextPage = this.<a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6a55fe2639c8e092f26fb2139e878754">GetStructuredTextPage</a>(i, ocrLanguage, includeAnnotations);</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span>                <span class="keywordflow">foreach</span> (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html">MuPDFStructuredTextBlock</a> textBlock <span class="keywordflow">in</span> structuredTextPage.StructuredTextBlocks)</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>                {</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>                    var numLines = textBlock.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html#a66bfcd689c26fa6e9a56090788a4058a">Count</a>;</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span>                    <span class="keywordflow">for</span> (var j = 0; j &lt; numLines; j++)</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span>                    {</div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span>                        <span class="keywordflow">if</span> (!<span class="keywordtype">string</span>.IsNullOrWhiteSpace(textBlock[j].Text))</div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span>                        {</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span>                            <span class="keywordflow">if</span> (started)</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span>                            {</div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span>                                text.Append(separator);</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span>                            }</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span>                            <span class="keywordflow">else</span></div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span>                            {</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span>                                started = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span>                            }</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span> </div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span>                            text.Append(textBlock[j].Text);</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span>                        }</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span>                    }</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span>                }</div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span>            }</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> </div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>            <span class="keywordflow">return</span> text.ToString();</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span>        }</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span><span class="comment"></span> </div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span><span class="comment">        /// Extracts all the text from the document and returns it as a &lt;see cref=&quot;string&quot;/&gt;, using optical character recognition (OCR) to determine what text is written on the image. The OCR step is run asynchronously, e.g. to avoid blocking the UI thread.</span></div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span><span class="comment">        /// &lt;param name=&quot;separator&quot;&gt;The character(s) used to separate the text lines obtained from the document. If this is &lt;see langword=&quot;null&quot; /&gt;, &lt;see cref=&quot;Environment.NewLine&quot;/&gt; is used as a default separator.&lt;/param&gt;</span></div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span><span class="comment">        /// &lt;param name=&quot;ocrLanguage&quot;&gt;The language to use for optical character recognition (OCR). If this is null, no OCR is performed.&lt;/param&gt;</span></div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span><span class="comment">        /// &lt;param name=&quot;includeAnnotations&quot;&gt;If this is &lt;see langword=&quot;true&quot; /&gt;, annotations (e.g. signatures) are included. Otherwise, only the page contents are included.&lt;/param&gt;</span></div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span><span class="comment">        /// &lt;param name=&quot;cancellationToken&quot;&gt;A &lt;see cref=&quot;CancellationToken&quot;/&gt; used to cancel the operation.&lt;/param&gt;</span></div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span><span class="comment">        /// &lt;param name=&quot;progress&quot;&gt;An &lt;see cref=&quot;IProgress{OCRProgressInfo}&quot;/&gt; used to report progress.&lt;/param&gt;</span></div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span><span class="comment">        /// &lt;returns&gt;A &lt;see cref=&quot;string&quot;/&gt; containing all the text in the document. Characters are converted from the UTF-8 representation used in the document to equivalent UTF-16 &lt;see cref=&quot;string&quot;/&gt;s.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6ba051a89ec887bc6ffa01df9545ecdd"> 1337</a></span><span class="comment"></span>        <span class="keyword">public</span> async Task&lt;string&gt; <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6ba051a89ec887bc6ffa01df9545ecdd">ExtractTextAsync</a>(<a class="code hl_class" href="class_mu_p_d_f_core_1_1_tesseract_language.html">TesseractLanguage</a> ocrLanguage, <span class="keywordtype">string</span> separator = <span class="keyword">null</span>, <span class="keywordtype">bool</span> includeAnnotations = <span class="keyword">true</span>, CancellationToken cancellationToken = <span class="keywordflow">default</span>, IProgress&lt;OCRProgressInfo&gt; progress = <span class="keyword">null</span>)</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span>        {</div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>            <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span>            {</div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span>                <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code hl_class" href="class_mu_p_d_f_core_1_1_document_locked_exception.html">DocumentLockedException</a>(<span class="stringliteral">&quot;A password is necessary to render the document!&quot;</span>);</div>
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span>            }</div>
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span> </div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"> 1344</span>            separator = separator ?? Environment.NewLine;</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span> </div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span>            var text = <span class="keyword">new</span> StringBuilder();</div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span>            <span class="keywordtype">bool</span> started = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span> </div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span>            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; this.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html#afad08aeacd9f27416dd193809fc4fd75">Count</a>; i++)</div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span>            {</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span>                <a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFStructuredTextPage</a> structuredTextPage = await this.<a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab74eca1ade08acd6c1c6a02f86b4129e">GetStructuredTextPageAsync</a>(i, ocrLanguage, includeAnnotations, cancellationToken, progress);</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span>                <span class="keywordflow">foreach</span> (<a class="code hl_class" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html">MuPDFStructuredTextBlock</a> textBlock <span class="keywordflow">in</span> structuredTextPage.StructuredTextBlocks)</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span>                {</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span>                    var numLines = textBlock.<a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html#a66bfcd689c26fa6e9a56090788a4058a">Count</a>;</div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span>                    <span class="keywordflow">for</span> (var j = 0; j &lt; numLines; j++)</div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span>                    {</div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span>                        <span class="keywordflow">if</span> (!<span class="keywordtype">string</span>.IsNullOrWhiteSpace(textBlock[j].Text))</div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span>                        {</div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"> 1359</span>                            <span class="keywordflow">if</span> (started)</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span>                            {</div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span>                                text.Append(separator);</div>
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span>                            }</div>
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"> 1363</span>                            <span class="keywordflow">else</span></div>
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span>                            {</div>
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span>                                started = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span>                            }</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span> </div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span>                            text.Append(textBlock[j].Text);</div>
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"> 1369</span>                        }</div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span>                    }</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span>                }</div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span>            }</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span> </div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span>            <span class="keywordflow">return</span> text.ToString();</div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span>        }</div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span><span class="comment"></span> </div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span><span class="comment">        /// Attempts to unlock the document with the supplied password.</span></div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span><span class="comment">        /// &lt;param name=&quot;password&quot;&gt;The user or owner password to use to unlock the document.&lt;/param&gt;</span></div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span><span class="comment">        /// &lt;returns&gt;&lt;see langword=&quot;true&quot;/&gt;If the document was successfully unlocked (or if it was never locked to begin with), &lt;see langword=&quot;false&quot;/&gt; if the password was incorrect and the document is still locked.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span><span class="comment">        /// &lt;remarks&gt;This method can be used both to unlock an encrypted document and to check whether the supplied owner password is correct.&lt;/remarks&gt;</span></div>
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a21cfd24357a21e7b9349edcee1ca095a"> 1383</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a21cfd24357a21e7b9349edcee1ca095a">TryUnlock</a>(<span class="keywordtype">string</span> password)</div>
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span>        {</div>
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a21cfd24357a21e7b9349edcee1ca095a">TryUnlock</a>(password, out _);</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span>        }</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span><span class="comment"></span> </div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span><span class="comment">        /// &lt;summary&gt;</span></div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span><span class="comment">        /// Attempts to unlock the document with the supplied password.</span></div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span><span class="comment">        /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span><span class="comment">        /// &lt;param name=&quot;password&quot;&gt;The user or owner password to use to unlock the document.&lt;/param&gt;</span></div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span><span class="comment">        /// &lt;param name=&quot;passwordType&quot;&gt;If the method returns true, this can be used to determine whether the supplied password was the user password or the owner password. If the method returns &lt;see langword=&quot;false&quot;/&gt;,</span></div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span><span class="comment">        /// this can be used to determine whether a user password and/or an owner password are required.&lt;/param&gt;</span></div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span><span class="comment">        /// &lt;returns&gt;&lt;see langword=&quot;true&quot;/&gt;If the document was successfully unlocked (or if it was never locked to begin with), &lt;see langword=&quot;false&quot;/&gt; if the password was incorrect and the document is still locked.&lt;/returns&gt;</span></div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span><span class="comment">        /// &lt;remarks&gt;This method can be used both to unlock an encrypted document and to check whether the supplied owner password is correct.&lt;/remarks&gt;</span></div>
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"><a class="line" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adc27b73c9aab377901cbfd7c6b1db591"> 1396</a></span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adc27b73c9aab377901cbfd7c6b1db591">TryUnlock</a>(<span class="keywordtype">string</span> password, out <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a> passwordType)</div>
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"> 1397</span>        {</div>
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"> 1398</span>            <span class="keywordtype">int</span> result = NativeMethods.UnlockWithPassword(this.OwnerContext.NativeContext, <span class="keyword">this</span>.NativeDocument, password);</div>
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> </div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"> 1400</span>            <span class="keywordtype">int</span> pt = 0;</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span> </div>
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span>            <span class="keywordflow">switch</span> (result)</div>
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span>            {</div>
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"> 1404</span>                <span class="keywordflow">case</span> 0:</div>
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span>                    pt = 0;</div>
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> </div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span>                    {</div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span>                        pt |= 1;</div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span>                    }</div>
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span> </div>
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted)</div>
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span>                    {</div>
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span>                        pt |= 2;</div>
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span>                    }</div>
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> </div>
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span>                    passwordType = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a>)pt;</div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span>                    <span class="keywordflow">return</span> !(this.EncryptionState == EncryptionState.Encrypted || this.RestrictionState == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted);</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span>                <span class="keywordflow">case</span> 1:</div>
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span>                    passwordType = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a>.None;</div>
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span>                    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span>                <span class="keywordflow">case</span> 2:</div>
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span>                    {</div>
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"> 1425</span>                        this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unlocked;</div>
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"> 1426</span>                    }</div>
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"> 1427</span>                    passwordType = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a>.User;</div>
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span>                    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span>                <span class="keywordflow">case</span> 4:</div>
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted)</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span>                    {</div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span>                        this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unlocked;</div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span>                    }</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span>                    passwordType = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a>.Owner;</div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span>                    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span>                <span class="keywordflow">case</span> 6:</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span>                    pt = 0;</div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> </div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Encrypted)</div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span>                    {</div>
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span>                        this.EncryptionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">EncryptionState</a>.Unlocked;</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span>                        pt |= 1;</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span>                    }</div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span> </div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span>                    <span class="keywordflow">if</span> (this.<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a> == <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Restricted)</div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span>                    {</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span>                        this.RestrictionState = <a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">RestrictionState</a>.Unlocked;</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span>                        pt |= 2;</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span>                    }</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span>                    passwordType = (<a class="code hl_enumeration" href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">PasswordTypes</a>)pt;</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span>                    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span>                <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span>                    <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentOutOfRangeException(<span class="stringliteral">&quot;Unexpected return value when unlocking the document: &quot;</span> + result.ToString());</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span>            }</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span>        }</div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span> </div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span> </div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span>        <span class="keyword">private</span> <span class="keywordtype">bool</span> disposedValue;</div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span><span class="comment"></span> </div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span><span class="comment">        ///&lt;inheritdoc/&gt;</span></div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span><span class="comment"></span>        <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Dispose(<span class="keywordtype">bool</span> disposing)</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span>        {</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span>            <span class="keywordflow">if</span> (!disposedValue)</div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span>            {</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span>                <span class="keywordflow">if</span> (disposing)</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span>                {</div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span>                    <a class="code hl_property" href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">Pages</a>.Dispose();</div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span>                    <span class="keywordflow">foreach</span> (MuPDFDisplayList list <span class="keywordflow">in</span> DisplayLists)</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span>                    {</div>
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span>                        list?.Dispose();</div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span>                    }</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span>                    DataHandle?.Free();</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span>                    DataHolder?.Dispose();</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span>                }</div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span> </div>
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span>                NativeMethods.DisposeDocument(OwnerContext.NativeContext, NativeDocument);</div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span> </div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span>                <span class="keywordflow">if</span> (NativeStream != IntPtr.Zero)</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span>                {</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span>                    NativeMethods.DisposeStream(OwnerContext.NativeContext, NativeStream);</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span>                }</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> </div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span>                disposedValue = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span>            }</div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span>        }</div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span><span class="comment"></span> </div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span><span class="comment">        ///&lt;inheritdoc/&gt;</span></div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span><span class="comment"></span>        ~MuPDFDocument()</div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span>        {</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span>            Dispose(disposing: <span class="keyword">false</span>);</div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span>        }</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span><span class="comment"></span> </div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span><span class="comment">        ///&lt;inheritdoc/&gt;</span></div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span><span class="comment"></span>        <span class="keyword">public</span> <span class="keywordtype">void</span> Dispose()</div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span>        {</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span>            Dispose(disposing: <span class="keyword">true</span>);</div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span>            GC.SuppressFinalize(<span class="keyword">this</span>);</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span>        }</div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span>    }</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span>}</div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_disposable_int_ptr_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_disposable_int_ptr.html">MuPDFCore.DisposableIntPtr</a></div><div class="ttdoc">An IDisposable wrapper around an IntPtr that frees the allocated memory when it is disposed.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00406">MuPDF.cs:407</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_document_locked_exception_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_document_locked_exception.html">MuPDFCore.DocumentLockedException</a></div><div class="ttdoc">The exception that is thrown when an attempt is made to render an encrypted document without supplyin...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00494">MuPDF.cs:495</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_context_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_context.html">MuPDFCore.MuPDFContext</a></div><div class="ttdoc">A wrapper around a MuPDF context object, which contains the exception stack and the resource cache st...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_context_8cs_source.html#l00025">MuPDFContext.cs:26</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html">MuPDFCore.MuPDFDocument</a></div><div class="ttdoc">A wrapper over a MuPDF document object, which contains possibly multiple pages.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00030">MuPDFDocument.cs:31</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a076f5938453f1828e29db9046fa58b4d"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a076f5938453f1828e29db9046fa58b4d">MuPDFCore.MuPDFDocument.SaveImage</a></div><div class="ttdeci">void SaveImage(int pageNumber, double zoom, PixelFormats pixelFormat, string fileName, RasterOutputFileTypes fileType, bool includeAnnotations=true)</div><div class="ttdoc">Save a page to an image file in the specified format.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00916">MuPDFDocument.cs:916</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a07d371f49b80285fe2303cc3736d34d8"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a07d371f49b80285fe2303cc3736d34d8">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">byte[] Render(int pageNumber, Rectangle region, double zoom, PixelFormats pixelFormat, bool includeAnnotations=true)</div><div class="ttdoc">Render (part of) a page to an array of bytes.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00602">MuPDFDocument.cs:602</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a0956211d754de68c12a772b6f33cf43b"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0956211d754de68c12a772b6f33cf43b">MuPDFCore.MuPDFDocument.GetRenderedSize</a></div><div class="ttdeci">static int GetRenderedSize(Rectangle region, double zoom, PixelFormats pixelFormat)</div><div class="ttdoc">Determine how many bytes will be necessary to render the specified region in page units at the specif...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00821">MuPDFDocument.cs:821</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a0cb4925508720a17b373ff69979d07cc"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a0cb4925508720a17b373ff69979d07cc">MuPDFCore.MuPDFDocument.GetRenderedSize</a></div><div class="ttdeci">int GetRenderedSize(int pageNumber, double zoom, PixelFormats pixelFormat)</div><div class="ttdoc">Determine how many bytes will be necessary to render the specified page at the specified zoom level,...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00804">MuPDFDocument.cs:804</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a17bcd16383e9f14dfd7124da4fd5861b"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a17bcd16383e9f14dfd7124da4fd5861b">MuPDFCore.MuPDFDocument.ClearCache</a></div><div class="ttdeci">void ClearCache()</div><div class="ttdoc">Discard all the display lists that have been loaded from the document, possibly freeing some memory i...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00584">MuPDFDocument.cs:584</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a21cfd24357a21e7b9349edcee1ca095a"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a21cfd24357a21e7b9349edcee1ca095a">MuPDFCore.MuPDFDocument.TryUnlock</a></div><div class="ttdeci">bool TryUnlock(string password)</div><div class="ttdoc">Attempts to unlock the document with the supplied password.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01383">MuPDFDocument.cs:1383</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a2256e773c3781a8c787af014f807d496"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a2256e773c3781a8c787af014f807d496">MuPDFCore.MuPDFDocument.GetStructuredTextPage</a></div><div class="ttdeci">MuPDFStructuredTextPage GetStructuredTextPage(int pageNumber, TesseractLanguage ocrLanguage, bool includeAnnotations=true, CancellationToken cancellationToken=default, IProgress&lt; OCRProgressInfo &gt; progress=null)</div><div class="ttdoc">Creates a new MuPDFStructuredTextPage from the specified page, using optical character recognition (O...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01178">MuPDFDocument.cs:1178</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a4257311e4fab32a4713d55c1d5ad5dc7"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4257311e4fab32a4713d55c1d5ad5dc7">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">Span&lt; byte &gt; Render(int pageNumber, Rectangle region, double zoom, PixelFormats pixelFormat, out IDisposable disposable, bool includeAnnotations=true)</div><div class="ttdoc">Render (part of) a page to a Span&lt;byte&gt;.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00735">MuPDFDocument.cs:735</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a440fc7f8dc82f8e007e1e1327e13bbcd"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a440fc7f8dc82f8e007e1e1327e13bbcd">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">void Render(int pageNumber, Rectangle region, double zoom, PixelFormats pixelFormat, IntPtr destination, bool includeAnnotations=true)</div><div class="ttdoc">Render (part of) a page to the specified destination.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00656">MuPDFDocument.cs:656</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a4e7f89e98170b4cb9e88e6bf63f2da57"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a4e7f89e98170b4cb9e88e6bf63f2da57">MuPDFCore.MuPDFDocument.ClipToPageBounds</a></div><div class="ttdeci">bool ClipToPageBounds</div><div class="ttdoc">Defines whether the images resulting from rendering operations should be clipped to the page boundari...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00109">MuPDFDocument.cs:109</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a5325407c802fd33982766295e4f3562c"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5325407c802fd33982766295e4f3562c">MuPDFCore.MuPDFDocument.SaveImage</a></div><div class="ttdeci">void SaveImage(int pageNumber, Rectangle region, double zoom, PixelFormats pixelFormat, string fileName, RasterOutputFileTypes fileType, bool includeAnnotations=true)</div><div class="ttdoc">Save (part of) a page to an image file in the specified format.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00857">MuPDFDocument.cs:857</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a55cce640549a58648d592f0f213dd8be"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a55cce640549a58648d592f0f213dd8be">MuPDFCore.MuPDFDocument.MuPDFDocument</a></div><div class="ttdeci">MuPDFDocument(MuPDFContext context, ref MemoryStream data, InputFileTypes fileType)</div><div class="ttdoc">Create a new MuPDFDocument from a MemoryStream.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00347">MuPDFDocument.cs:347</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a5ea3701940cdfa3ca26676516a70bede"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5ea3701940cdfa3ca26676516a70bede">MuPDFCore.MuPDFDocument.GetMultiThreadedRenderer</a></div><div class="ttdeci">MuPDFMultiThreadedPageRenderer GetMultiThreadedRenderer(int pageNumber, int threadCount, bool includeAnnotations=true)</div><div class="ttdoc">Create a new MuPDFMultiThreadedPageRenderer that renders the specified page with the specified number...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00782">MuPDFDocument.cs:782</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a5fba213e4b093be6e92b6ca067bd4e40"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a5fba213e4b093be6e92b6ca067bd4e40">MuPDFCore.MuPDFDocument.MuPDFDocument</a></div><div class="ttdeci">MuPDFDocument(MuPDFContext context, string fileName)</div><div class="ttdoc">Create a new MuPDFDocument from a file.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00453">MuPDFDocument.cs:453</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a69aa759f9a0458612fece2851310d76e"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a69aa759f9a0458612fece2851310d76e">MuPDFCore.MuPDFDocument.CreateDocument</a></div><div class="ttdeci">static void CreateDocument(MuPDFContext context, string fileName, DocumentOutputFileTypes fileType, bool includeAnnotations=true, params(MuPDFPage page, Rectangle region, float zoom)[] pages)</div><div class="ttdoc">Create a new document containing the specified (parts of) pages from other documents.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01027">MuPDFDocument.cs:1027</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a6a55fe2639c8e092f26fb2139e878754"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6a55fe2639c8e092f26fb2139e878754">MuPDFCore.MuPDFDocument.GetStructuredTextPage</a></div><div class="ttdeci">MuPDFStructuredTextPage GetStructuredTextPage(int pageNumber, bool includeAnnotations=true)</div><div class="ttdoc">Creates a new MuPDFStructuredTextPage from the specified page. This contains information about the te...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01154">MuPDFDocument.cs:1154</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a6ba051a89ec887bc6ffa01df9545ecdd"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a6ba051a89ec887bc6ffa01df9545ecdd">MuPDFCore.MuPDFDocument.ExtractTextAsync</a></div><div class="ttdeci">async Task&lt; string &gt; ExtractTextAsync(TesseractLanguage ocrLanguage, string separator=null, bool includeAnnotations=true, CancellationToken cancellationToken=default, IProgress&lt; OCRProgressInfo &gt; progress=null)</div><div class="ttdoc">Extracts all the text from the document and returns it as a string, using optical character recogniti...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01337">MuPDFDocument.cs:1337</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a70387793b8634c7cdda9d4c9f6c23de2"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a70387793b8634c7cdda9d4c9f6c23de2">MuPDFCore.MuPDFDocument.ExtractText</a></div><div class="ttdeci">string ExtractText(string separator=null, bool includeAnnotations=true)</div><div class="ttdoc">Extracts all the text from the document and returns it as a string. The reading order is taken from t...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01241">MuPDFDocument.cs:1241</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_a9eeca1ba2ab6d8ec59e0eb62aa7b0632"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#a9eeca1ba2ab6d8ec59e0eb62aa7b0632">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">byte[] Render(int pageNumber, double zoom, PixelFormats pixelFormat, bool includeAnnotations=true)</div><div class="ttdoc">Render a page to an array of bytes.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00636">MuPDFDocument.cs:636</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_aaa26de08c78c1abd6af2593533e92eab"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aaa26de08c78c1abd6af2593533e92eab">MuPDFCore.MuPDFDocument.MuPDFDocument</a></div><div class="ttdeci">MuPDFDocument(MuPDFContext context, byte[] data, InputFileTypes fileType)</div><div class="ttdoc">Create a new MuPDFDocument from an array of bytes.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00245">MuPDFDocument.cs:245</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_aac27de3027a4fd44bbae7f5d5ebb44ac"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#aac27de3027a4fd44bbae7f5d5ebb44ac">MuPDFCore.MuPDFDocument.MuPDFDocument</a></div><div class="ttdeci">MuPDFDocument(MuPDFContext context, IntPtr dataAddress, long dataLength, InputFileTypes fileType, ref IDisposable dataHolder)</div><div class="ttdoc">Create a new MuPDFDocument from data bytes accessible through the specified pointer.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00145">MuPDFDocument.cs:145</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ab42e60e523a9a3fefc665c6b800cb3ec"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab42e60e523a9a3fefc665c6b800cb3ec">MuPDFCore.MuPDFDocument.WriteImage</a></div><div class="ttdeci">void WriteImage(int pageNumber, double zoom, PixelFormats pixelFormat, Stream outputStream, RasterOutputFileTypes fileType, bool includeAnnotations=true)</div><div class="ttdoc">Write a page to an image stream in the specified format.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01008">MuPDFDocument.cs:1008</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ab73256bd4480296f64fa136343366764"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab73256bd4480296f64fa136343366764">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">Span&lt; byte &gt; Render(int pageNumber, double zoom, PixelFormats pixelFormat, out IDisposable disposable, bool includeAnnotations=true)</div><div class="ttdoc">Render a page to a Span&lt;byte&gt;.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00763">MuPDFDocument.cs:763</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ab74eca1ade08acd6c1c6a02f86b4129e"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ab74eca1ade08acd6c1c6a02f86b4129e">MuPDFCore.MuPDFDocument.GetStructuredTextPageAsync</a></div><div class="ttdeci">async Task&lt; MuPDFStructuredTextPage &gt; GetStructuredTextPageAsync(int pageNumber, TesseractLanguage ocrLanguage, bool includeAnnotations=true, CancellationToken cancellationToken=default, IProgress&lt; OCRProgressInfo &gt; progress=null)</div><div class="ttdoc">Creates a new MuPDFStructuredTextPage from the specified page, using optical character recognition (O...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01211">MuPDFDocument.cs:1211</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ac0264349fe3b2ccc319f0978c448ff11"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac0264349fe3b2ccc319f0978c448ff11">MuPDFCore.MuPDFDocument.WriteImage</a></div><div class="ttdeci">void WriteImage(int pageNumber, Rectangle region, double zoom, PixelFormats pixelFormat, Stream outputStream, RasterOutputFileTypes fileType, bool includeAnnotations=true)</div><div class="ttdoc">Write (part of) a page to an image stream in the specified format.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00937">MuPDFDocument.cs:937</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ac3366ccae6a79335ba7ac73fdf4507d4"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac3366ccae6a79335ba7ac73fdf4507d4">MuPDFCore.MuPDFDocument.MuPDFDocument</a></div><div class="ttdeci">MuPDFDocument(MuPDFContext context, IntPtr dataAddress, long dataLength, InputFileTypes fileType)</div><div class="ttdoc">Create a new MuPDFDocument from data bytes accessible through the specified pointer.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00135">MuPDFDocument.cs:135</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ac691043a7c74ff979a4f80279a8e9f79"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ac691043a7c74ff979a4f80279a8e9f79">MuPDFCore.MuPDFDocument.Pages</a></div><div class="ttdeci">MuPDFPageCollection Pages</div><div class="ttdoc">The pages contained in the document.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00104">MuPDFDocument.cs:104</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_adb5535ea11620c818469bc7d03512d1c"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adb5535ea11620c818469bc7d03512d1c">MuPDFCore.MuPDFDocument.Render</a></div><div class="ttdeci">void Render(int pageNumber, double zoom, PixelFormats pixelFormat, IntPtr destination, bool includeAnnotations=true)</div><div class="ttdoc">Render a page to the specified destination.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00715">MuPDFDocument.cs:715</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_adc27b73c9aab377901cbfd7c6b1db591"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adc27b73c9aab377901cbfd7c6b1db591">MuPDFCore.MuPDFDocument.TryUnlock</a></div><div class="ttdeci">bool TryUnlock(string password, out PasswordTypes passwordType)</div><div class="ttdoc">Attempts to unlock the document with the supplied password.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01396">MuPDFDocument.cs:1396</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_adec1ed3c29832eb920dd86508b78cbc4"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#adec1ed3c29832eb920dd86508b78cbc4">MuPDFCore.MuPDFDocument.ExtractText</a></div><div class="ttdeci">string ExtractText(TesseractLanguage ocrLanguage, string separator=null, bool includeAnnotations=true)</div><div class="ttdoc">Extracts all the text from the document and returns it as a string, using optical character recogniti...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01288">MuPDFDocument.cs:1288</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_ae82f87c8f0e98b2b6b3186b1ed7bba93"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#ae82f87c8f0e98b2b6b3186b1ed7bba93">MuPDFCore.MuPDFDocument.CreateDocument</a></div><div class="ttdeci">static void CreateDocument(MuPDFContext context, string fileName, DocumentOutputFileTypes fileType, bool includeAnnotations=true, params MuPDFPage[] pages)</div><div class="ttdoc">Create a new document containing the specified pages from other documents.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l01135">MuPDFDocument.cs:1135</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_document_html_af93dd2bd9576b2b2612e159e647eae33"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_document.html#af93dd2bd9576b2b2612e159e647eae33">MuPDFCore.MuPDFDocument.Restrictions</a></div><div class="ttdeci">DocumentRestrictions Restrictions</div><div class="ttdoc">Describes the operations that are restricted on the document. This is not actually enforced by the li...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_document_8cs_source.html#l00126">MuPDFDocument.cs:126</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_exception_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_exception.html">MuPDFCore.MuPDFException</a></div><div class="ttdoc">The exception that is thrown when a MuPDF operation fails.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00478">MuPDF.cs:479</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_multi_threaded_page_renderer_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_multi_threaded_page_renderer.html">MuPDFCore.MuPDFMultiThreadedPageRenderer</a></div><div class="ttdoc">A class that holds the necessary resources to render a page of a MuPDF document using multiple thread...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_multi_threaded_page_renderer_8cs_source.html#l00276">MuPDFMultiThreadedPageRenderer.cs:277</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_page_collection_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html">MuPDFCore.MuPDFPageCollection</a></div><div class="ttdoc">A lazy collection of MuPDFPages. Each page is loaded from the document as it is requested for the fir...</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_page_8cs_source.html#l00131">MuPDFPage.cs:132</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_page_collection_html_afad08aeacd9f27416dd193809fc4fd75"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_page_collection.html#afad08aeacd9f27416dd193809fc4fd75">MuPDFCore.MuPDFPageCollection.Count</a></div><div class="ttdeci">int Count</div><div class="ttdoc">The number of pages in the collection.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_page_8cs_source.html#l00156">MuPDFPage.cs:156</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_page_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_page.html">MuPDFCore.MuPDFPage</a></div><div class="ttdoc">A wrapper over a MuPDF page object, which contains information about the page's boundaries.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_page_8cs_source.html#l00027">MuPDFPage.cs:28</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html">MuPDFCore.MuPDFStructuredTextBlock</a></div><div class="ttdoc">Represents a structured text block containing text or an image.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_structured_text_page_8cs_source.html#l00556">MuPDFStructuredTextPage.cs:557</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block_html_a66bfcd689c26fa6e9a56090788a4058a"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_block.html#a66bfcd689c26fa6e9a56090788a4058a">MuPDFCore.MuPDFStructuredTextBlock.Count</a></div><div class="ttdeci">abstract int Count</div><div class="ttdoc">The number of lines in the block.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_structured_text_page_8cs_source.html#l00587">MuPDFStructuredTextPage.cs:587</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_mu_p_d_f_structured_text_page.html">MuPDFCore.MuPDFStructuredTextPage</a></div><div class="ttdoc">Represents a structured representation of the text contained in a page.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_structured_text_page_8cs_source.html#l00031">MuPDFStructuredTextPage.cs:32</a></div></div>
<div class="ttc" id="aclass_mu_p_d_f_core_1_1_tesseract_language_html"><div class="ttname"><a href="class_mu_p_d_f_core_1_1_tesseract_language.html">MuPDFCore.TesseractLanguage</a></div><div class="ttdoc">Represents a language used by Tesseract OCR.</div><div class="ttdef"><b>Definition:</b> <a href="_tesseract_language_8cs_source.html#l00013">TesseractLanguage.cs:14</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html"><div class="ttname"><a href="namespace_mu_p_d_f_core.html">MuPDFCore</a></div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00026">MuPDF.cs:27</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_a4cb9694810eeb8c98f699eac7bebeca6"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#a4cb9694810eeb8c98f699eac7bebeca6">MuPDFCore.DocumentOutputFileTypes</a></div><div class="ttdeci">DocumentOutputFileTypes</div><div class="ttdoc">Document file types supported in output by the library.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00214">MuPDF.cs:215</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_a6f956802ff33af39b555fc95caf5486f"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#a6f956802ff33af39b555fc95caf5486f">MuPDFCore.InputFileTypes</a></div><div class="ttdeci">InputFileTypes</div><div class="ttdoc">File types supported in input by the library.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00122">MuPDF.cs:123</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_a789c0ee2f3e1b7e939c1a94921119f02"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#a789c0ee2f3e1b7e939c1a94921119f02">MuPDFCore.EncryptionState</a></div><div class="ttdeci">EncryptionState</div><div class="ttdoc">Possible document encryption states.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00261">MuPDF.cs:262</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_a8508181e09f4f3d05dfd9555e9519331"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#a8508181e09f4f3d05dfd9555e9519331">MuPDFCore.RestrictionState</a></div><div class="ttdeci">RestrictionState</div><div class="ttdoc">Possible document restriction states.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00282">MuPDF.cs:283</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_aa6919d62a772f0334777d47f9c2d6c59"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#aa6919d62a772f0334777d47f9c2d6c59">MuPDFCore.ExitCodes</a></div><div class="ttdeci">ExitCodes</div><div class="ttdoc">Exit codes returned by native methods describing various errors that can occur.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00031">MuPDF.cs:32</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_abff8cbdf3a6dcdbcd7b52a8696ac2595"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#abff8cbdf3a6dcdbcd7b52a8696ac2595">MuPDFCore.DocumentRestrictions</a></div><div class="ttdeci">DocumentRestrictions</div><div class="ttdoc">Document restrictions.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00303">MuPDF.cs:304</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_ade1eb4d4f9c9c8a66bde9152ea9e41bb"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#ade1eb4d4f9c9c8a66bde9152ea9e41bb">MuPDFCore.PixelFormats</a></div><div class="ttdeci">PixelFormats</div><div class="ttdoc">Pixel formats supported by the library.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00235">MuPDF.cs:236</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_ae9af8906676327d741663484e282c9a9"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#ae9af8906676327d741663484e282c9a9">MuPDFCore.PasswordTypes</a></div><div class="ttdeci">PasswordTypes</div><div class="ttdoc">Password types.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00334">MuPDF.cs:335</a></div></div>
<div class="ttc" id="anamespace_mu_p_d_f_core_html_afb84d65324afe9d4edaf5b15c128bc7e"><div class="ttname"><a href="namespace_mu_p_d_f_core.html#afb84d65324afe9d4edaf5b15c128bc7e">MuPDFCore.RasterOutputFileTypes</a></div><div class="ttdeci">RasterOutputFileTypes</div><div class="ttdoc">Raster image file types supported in output by the library.</div><div class="ttdef"><b>Definition:</b> <a href="_mu_p_d_f_8cs_source.html#l00188">MuPDF.cs:189</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html">MuPDFCore.Rectangle</a></div><div class="ttdoc">Represents a rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00326">Rectangles.cs:327</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a27cf4d4747a8677f8103746ee3386595"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a27cf4d4747a8677f8103746ee3386595">MuPDFCore.Rectangle.Round</a></div><div class="ttdeci">RoundedRectangle Round()</div><div class="ttdoc">Round the rectangle's coordinates to the closest integers.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00392">Rectangles.cs:392</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a4ea4052094e051b974b7ca1bc9346655"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a4ea4052094e051b974b7ca1bc9346655">MuPDFCore.Rectangle.Width</a></div><div class="ttdeci">float Width</div><div class="ttdoc">The width of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00351">Rectangles.cs:351</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a5a06dd7d57268bdf22b5ce741b9dbf4e"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a5a06dd7d57268bdf22b5ce741b9dbf4e">MuPDFCore.Rectangle.Height</a></div><div class="ttdeci">float Height</div><div class="ttdoc">The height of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00356">Rectangles.cs:356</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a5e3466975ea3adbd9ab7a6920247170b"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a5e3466975ea3adbd9ab7a6920247170b">MuPDFCore.Rectangle.Y0</a></div><div class="ttdeci">float Y0</div><div class="ttdoc">The top coordinate of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00336">Rectangles.cs:336</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a69c99f6aaf6cfa3ca52a9aab45fb06a0"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a69c99f6aaf6cfa3ca52a9aab45fb06a0">MuPDFCore.Rectangle.X1</a></div><div class="ttdeci">float X1</div><div class="ttdoc">The right coordinate of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00341">Rectangles.cs:341</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_a7cc750e4547b99f89a6427ab86b99fb3"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#a7cc750e4547b99f89a6427ab86b99fb3">MuPDFCore.Rectangle.X0</a></div><div class="ttdeci">float X0</div><div class="ttdoc">The left coordinate of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00331">Rectangles.cs:331</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rectangle_html_aca202ae10d09cc9307a57e3c8f206bed"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rectangle.html#aca202ae10d09cc9307a57e3c8f206bed">MuPDFCore.Rectangle.Y1</a></div><div class="ttdeci">float Y1</div><div class="ttdoc">The bottom coordinate of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00346">Rectangles.cs:346</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rounded_rectangle_html"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html">MuPDFCore.RoundedRectangle</a></div><div class="ttdoc">Represents a rectangle using only integer numbers.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00494">Rectangles.cs:495</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rounded_rectangle_html_a29904ab0820872c48e43631ece9f1fff"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a29904ab0820872c48e43631ece9f1fff">MuPDFCore.RoundedRectangle.Width</a></div><div class="ttdeci">int Width</div><div class="ttdoc">The width of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00519">Rectangles.cs:519</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rounded_rectangle_html_a73d75f9e5e23910ee0a4078eec4980c9"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rounded_rectangle.html#a73d75f9e5e23910ee0a4078eec4980c9">MuPDFCore.RoundedRectangle.Height</a></div><div class="ttdeci">int Height</div><div class="ttdoc">The height of the rectangle.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00524">Rectangles.cs:524</a></div></div>
<div class="ttc" id="astruct_mu_p_d_f_core_1_1_rounded_size_html"><div class="ttname"><a href="struct_mu_p_d_f_core_1_1_rounded_size.html">MuPDFCore.RoundedSize</a></div><div class="ttdoc">Represents the size of a rectangle using only integer numbers.</div><div class="ttdef"><b>Definition:</b> <a href="_rectangles_8cs_source.html#l00181">Rectangles.cs:182</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_d84f90bba075742c2a9090e1ba7aabcd.html">MuPDFCore</a></li><li class="navelem"><b>MuPDFDocument.cs</b></li>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
  </ul>
</div>
</body>
</html>
